// #include <iostream>
// #include <istream>
// using namespace std;

// class Date
// {
//     friend istream& operator>>(istream& in, Date& d);
// public:
//     Date(int year = 1, int month = 1, int day = 1)
//     {
//         _year = year;
//         _month = month;
//         _day = day;
//     }
//     int GetMonthDay(int year, int month)
//     {
//         static int a[13] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
//         if(month == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))
//         {
//             return 29;
//         }
//         return a[month];
//     }
//     bool operator!=(const Date& d) const
//     {
//         if(_year == d._year && _month == d._month && _day == d._day)
//         {
//             return false;
//         }
//         return true;
//     }
//     bool operator<(const Date& d) const
//     {
//         if(_year < d._year || (_year == d._year && _month < d._month) 
//         || (_year == d._year && _month == d._month && _day < d._day))
//         {
//             return true;
//         }
//         return false;
//     }
//     Date& operator+=(int day)
//     {
//         _day += day;
//         while(_day > GetMonthDay(_year, _month))
//         {
//             _day -= GetMonthDay(_year, _month);
//             _month++;
//             if(_month == 13)
//             {
//                 _year++;
//                 _month = 1;
//             }
//         }
//         return *this;
//     }

//     Date& operator++()
//     {
//         *this += 1;
//         return *this;
//     }

//     int operator-(const Date& d) const
//     {
//         int flag = 1;
//         Date max = *this;
//         Date min = d;
//         if(*this < d)
//         {
//             max = d;
//             min = *this;
//             flag = -1;
//         }
//         int n = 0;
//         while(min != max)
//         {
//             ++min;
//             ++n;
//         }
//         return n * flag;
//     }

// private:
//     int _year;
//     int _month;
//     int _day;
// };

// istream& operator>>(istream& in, Date& d)
// {
//     in >> d._year >> d._month >> d._day;
//     return in;
// }

// int GetFrontNumber(int x)
// {
//     return x / 10000;
// }

// int GetMiddleNumber(int x)
// {
//     return (x - x / 10000 * 10000) / 100;
// }

// int GetBackNumber(int x)
// {
//     return (x - x / 100 * 100);
// }
// int main() 
// {
//     int x, y;
//     cin >> x >> y;
//     Date d1(GetFrontNumber(x), GetMiddleNumber(x), GetBackNumber(x));
//     Date d2(GetFrontNumber(y), GetMiddleNumber(y), GetBackNumber(y));
//     int count = d2 - d1;
// }

// #include <iostream>
// using namespace std;

// class MyClass 
// {
// public:
//     MyClass(int m = 1) 
//     { 
//         _m = m;
//         cout << "构造函数调用" << endl; 
//     }
//     ~MyClass() 
//     { 
//         _m = 0;
//         cout << "析构函数调用" << endl; 
//     }
// private:
//     int _m = 1;
// };

// int main()
// {
//     system("chcp 65001");
//     // new/delete 用法
//     MyClass* obj1 = new MyClass(5); // 调用构造函数
//     delete obj1; // 调用析构函数，再释放内存

//     // malloc/free 用法（C++ 中不建议这样处理自定义类）
//     MyClass* obj2 = (MyClass*)malloc(sizeof(MyClass)); // 仅分配内存，不调用构造
//     free(obj2); // 仅释放内存，不调用析构 
// }
// #include <iostream>
// #include <istream>
// using namespace std;

// class Date
// {
//     friend istream& operator>>(istream& in, Date& d);
//     friend ostream& operator<<(ostream& out, Date& d);
// public:
//     Date(int year = 1, int month = 1, int day = 1)
//     :_year(year)
//     ,_month(month)
//     ,_day(day)
//     {}
//     int GetMonthDay(int year, int month)
//     {
//         static int a[13] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
//         if(month == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))
//         {
//             return 29;
//         }
//         return a[month];
//     }
//     Date& operator+=(int day);
// private:
//     int _year;
//     int _month;
//     int _day;
// };


// Date& Date::operator+=(int day)
// {
//     _day += day;
//     while(_day > GetMonthDay(_year, _month))
//     {
//         _day -= GetMonthDay(_year, _month);
//         ++_month;
//         if(_month == 13)
//         {
//             ++_year;
//             _month = 1;
//         }
//     }
//     return *this;
// }


// istream& operator>>(istream& in, Date& d)
// {
//     in >> d._year >> d._month >> d._day;
//     return in;
// }
// ostream& operator<<(ostream& out, Date& d)
// {
//     out << d._year << "-" << d._month << "-" << d._day << endl;
//     return out;
// }

// int main() 
// {
//     Date d1;
//     int k = 0;
//     int day = 0;
//     cin >> k;
//     while(k--)
//     {
//         cin >> d1 >> day;
//         d1 += day;
//         cout << d1 << endl;
//     }
//     return 0;
// }